﻿using UIOC.Attributes;

namespace UIOC.Observable.Tests.Objects {

    //[AutoImplement]
    public interface IUIOCObject {

        //[AutoImplementField(typeof(IGlobalInterfaceOne))]
        IUIOCObservableGlobalInterfaceOne GlobalInterfaceOne { get; }

        IUIOCObservableGlobalInterfaceTwo Two { get; }
    }

    [Implement(typeof(IUIOCObject))]
    public partial class UIOCObject : Object, IUIOCObject {

        [Autowired]
        private IUIOCObservableGlobalObject m_GlobalObject;

        [Autowired]
        private IUIOCObservableGlobalInterfaceOne m_GlobalInterfaceOne;
        public IUIOCObservableGlobalInterfaceOne GlobalInterfaceOne => m_GlobalInterfaceOne;

        //private IGlobalInterfaceOne Field_GlobalInterfaceOne1 => field__GlobalInterfaceOne__;
        //private IGlobalInterfaceOne Field_GlobalInterfaceOne2 {
        //    get => field__GlobalInterfaceOne__;
        //}
        //private IGlobalInterfaceOne Field_GlobalInterfaceOne3 {
        //    get { return field__GlobalInterfaceOne__; }
        //}

        [Autowired]
        private IUIOCObservableGlobalInterfaceTwo m_Two;
        public IUIOCObservableGlobalInterfaceTwo Two => m_Two;
    }
}